LMD IDE-Tools Standalone Packs - ReadMe
(© by LMD Innovative, (http://www.lmd.de
or http://www.lmdinnovative.com)
[Main]
Contents
Helpfile and tutorials
Designtime Enhancements
Using different Language Resource File
DesignPack
Introduction
History: Changes
Updating projects to DesignPack
2016
ScriptPack
Introduction
History: Changes
SyntaxEdit
Introduction
History: Changes
Helpfile and tutorials
By default helpfiles are usually not included with standard/trial installers. If
you did not already download current documentation pack, please visit
LMD public download area and get the
LMD IDE-Tools documentation package. Online Tutorials for ScriptPack,
DesignPack etc. are available. Those tutorials and FAQs referring to other parts of LMD IDE-Tools can be found in the
public LMD Wiki.
[Top]
Designtime Enhancements
Like for all LMD 2011 products the LMD Designtime Enhancements package is installed automatically (dcllmdrtl11_XX.bpl
or
LMD.Vcl.Design.Rtl.dll,
compiled versions only).
This package provides common design-time features for all LMD packages. Please
check About dialog of any LMD control to enable/disable design-time features.
For further info check LMD Designtime enhancements
description.
[Top]
Using different Language Resource File
Translated Resourcestrings can be found in
-
\Resources
folder below installation directory for compiled versions and
-
\lib\source\strings
folder for sourcecode versions
To change current language simply copy unit file
of desired language to library file and recompile your application.
Feel free to send us modified resource units for other languages!
[Top]
DesignPack:
Introduction
Welcome to LMD DesignPack, a collection of native VCL
components which help you to enhance your projects with advanced designing
features - either by adding object inspector like controls, extended form
designers or diagram like objects. Create your own IDE or add designing features
to your applications simply and quickly!
To get a quick start we suggest that you check the demo projects which
are shipped with any version of LMD DesignPack (subfolder
\lmddesign
in
\demos
directory):
|
Folder |
Description |
|
\_NewInVers4 |
This project demonstrates all new features of
DesignPack 4. |
|
\DataBaseApplication (Delphi only) |
Small database project demonstration use of DFM files,
property filtering etc. |
|
\FormDesigner (Delphi only) |
Extensive demo project providing
a complete DataBase Form-Designer. Load the demo form or
create your own database forms and execute them for testing! |
|
\PropertyEditor (Delphi only) |
Demonstrates a TPicture property editor. |
|
\ReportDesigner (Delphi only) |
The most extensive demo project
- a sample Report Designer based on QuickReport controls (Installation
of QuickReport is required to run this demo). Many
advanced techniques are used demonstrating how to implement a
custom designer. Demo report is available (Customers_D5.rpt
for Delphi 5, Customers_D6.rpt for Delphi 6 etc.). |
|
\ScriptEvents (Delphi only) |
Extended version of FormsDesigner demo,
includes support for event handlers in VBScript.
(Installation of LMD
ScriptPack is required to run this demo) |
|
\ScriptEventsEx (Delphi only) |
Extended version of ScriptEvents demo which
demonstrates use of SyntaxEdit control. As example SynEdit
package was used
(Installation of LMD
ScriptPack and
SynEdit
packages is required to run this demo) |
|
\TLMDDBDiagram |
TLMDDBDiagram demo. Drag/Drop,
Mouse and Link events are demonstrated. |
|
\TLMDDesigner |
Extensive project demonstrating
various features of TLMDDesigner. Also saving/restoring of
edited forms is shown (does not work in Delphi 8). |
|
\TLMDDesignManager (Delphi
only) |
TLMDDesigner demo. Demonstrates
setting up a design environment with almost no code. |
|
\TLMDDesignPanel |
Small demo demonstrating the use
of TLMDDesigner in connection with TLMDDesignPanel. |
|
\TLMDDiagram |
TLMDDiagram demo. Drag/Drop,
Mouse and Link events are demonstrated. Furthermore custom
drawing handlers for items and links are shown. |
|
\TLMDPropertyInspector |
Example for
TLMDPropertyInspector. Assigning controls or objects for
editing at runtime via code is shown. In addition
visual styles are shhown and examples for
custom events (highlighting/filtering of properties) are
available. At last sourcecode for a custom property editor is
shown. |
[Top]
DesignPack: Changes
In release 5 much code was rewritten for a better
integration with LMD IDE-Tools (see new features there). Besides that following
specific features were added:
- It ia now possible to design forms (TCustomForm
descendants) in the TLMDDesignPanel. This allows to develop BDS like IDE
user interface.
- New designer ShowRootResizers property allows to show
mouse handles to resize the root inside design panel.
- New global components modification notifications feature
allows to synchronize shown in Design Pack controls content without any
links between controls. Useful e.g. if for example you move some Vcl control
by the designer, the Left and Top property values will be automatically
updated in the property inspector. Or: if you rename some Vcl component in
property inspector, the object combo box will automatically update shown
component name.
- The global components modification notifications allow to
detect when components located inside module root are modified. New
TLMDModule.OnCompsModified event can be easily used to detect such
modifications, instead of several old events of designer or property
inspector.
- The global components modification notifications allows
to provide more correct notifications, finding correct module for the
modified component. Imagine that you edit by the property inspector the
TClientDataSet component from one module that refers to the TDataSource
component from another module. Since the property inspector can edit linked
data source component properties (by expanding DataSource property) it is
important that as a result of such modification a second module will receive
the notification, but not the first one.
- All design pack controls are now closely oriented to work
with designer. So, EditorWindows has been removed from all controls except
the TLMDDesigner. All other controls will automatically search for the
appropriate designer in cases when the editor window manager is required.
There are no connection to service provider required, because it is always
possible to map editing control to its module (designer).
- New TLMDModule.OnGetLoadingCompRef event added to allow
to dynamically load modules in the presence of inter module component links.
The Vcl allows to do this only starting from Delphi2005, so this event is
not available in Delphi 7.
In release 4 many features requested by customers were added, e.g.:
- Unicode support for NT-based systems!
- Support for Frames and Frame children - including
saving/loading roots with frame-copies and inherited from base-frame event
handlers. Most notable feature is capability to load forms with frames at
run-time without creation of dummy frame instances.
- Alignment lines support for design areas - helpful feature to align
controls when they are moved or sized (even possible when controls are
inserted).
- The Designer control supports now saving/restoring of
Lock state.
- Component captions for non-visual controls
- The designer supports transparenting (grouping) of
controls. to handle compound controls as single object (which can be
moved/resized/deleted).
- The TLMDServiceProvider component represent services
architecture for simplifying development of extensible applications.
- And other minor new helpful additions like predefined
form for representing the structure of a design module or integration code
for LMD IDE-Tools support. E.g. designer, property inspector and
component tree components now have the ability to display useful default
popup menus. Also they can just link popup menu components by adding
default items automatically. This feature is used to fill popup menu with
Delphi like component editor verbs in designer and component tree.
- Combined helpfile for all IDE-Tools packages (IDE
Integration package, Designpack, ScriptPack and SyntaxEdit).
In release 3 many features requested by customers
were added, e.g.:
- New TLMDDesignObjects collection
component. Greatly simplifies interoperation between different DesignPack
components in Delphi db-aware like style.
- New TLMDModule component. Some
module-related utilities and events were moved from other DesignPack
components to the TLMDModule component. It actually implements all required
functionality for event support and enhanced streaming. It is designed to be
used not only while designing, but also at runtime e.g. for loading of forms
and hooking runtime event handlers.
- True Event support. Includes ability to
work with events in property inspector, to store/load event handler
references in *.dfm file in Delphi style. So, text DFMs also can be used to
store forms with event handlers. Design pack relies on external source code
utilities for managing event handler source code. Also external runtime
event handler hooking mechanism is expected (for example from scripting
library). LMD ScriptPack was prepared for working with DesignPack smoothly!
- Property names translation was implemented
in TLMDPropertyInspector control (OnTranslateProp event).
- Collection and Menudesigner property
editors were added.
[Top]
DesignPack: Updating existing projects
to DesignPack 2016
Main changes
in DesignPack 3 and later were caused by the new event and language/scripting host support.
Functionality which was previously included in TLMDDesigner or
TLMDPropertyInspector was sourced out to new TLMDModule and TLMDDesignObjects
controls. Unfortunately some code created with DesignPack 1 or 2 will be broken because of the drastic internal
changes, so please back up your projects before using
DesignPack 4! However these changes are usually caused by the fact, that
e.g. certain methods or events are low located in a different control. Also
please refer to updated demonstration projects, where all changes were done as
well. Usually following changes are required:
- For any used TLMDDesigner
component you must also place a TLMDModule component on the form and connect
it to the designer (via Module property). Then place
TLMDDesignObjects component, name it "Selection". Connect it to designer
Selection property. Optionally, you can place another one
TLMDDesignObjects component and connect it to AllComps designer
property.
- Please note that
DesignControl property no longer exists. Check out description of Root
property in TLMDModule and read topic Designable Surface - Root control
in DesignPack Guide.
- If you don't use
TLMDDesignManager and all synchronization tasks were performed manually:
Remove corresponding code from the project. Now it is only required to share
Selection or AllComps (e.g. between TLMDPropertyInspector and
TLMDObjectComboBox).
- If you use property
inspector with the designer (and don't use design manager), connect also
corresponding module (TLMDModule component) to TLMDPropertyInspector.
- If you use design manager,
it will automatically connects required TLMDDesignObjects components to
specified property-inspector and object-combo-box (when specific
TLMDDesigner is activated).
- Since some methods and
events were moved to TLMDModule component, you should change the code
accordingly and also reassign event handlers.
[Top]
ScriptPack: Introduction
Thank you for using LMD ScriptPack! LMD ScriptPack adds fully functional
support of Windows Scripting Host engine to your Delphi/CBuilder application.
TLMDScriptControl allows to run scripts from within your application and to
share any application object with script interpreter
engine. In addition it allows you to completely manage application objects
within script, including operating with public properties, running methods,
setting script procedures as event handlers etc.
LMD ScriptPack represents also an easy way to make your application extendable
by external scripts - so there is no need to edit source code (or rebuild
projects) to change and/or enhance its functionality.
Major Update with Release 6.0!
-
New PascalScript Language support added.
Unlike the previously MS
ActiveScripting based languages this is a 100% native VCL
implementation without need of external dlls. The
PascalScript engine includes an optimized byte code compiler
and very fast interpreter.
The PascalScript language is a dynamic Variant based script
language that supports most of the Delphi Pascal expressions
and statements like
- procedure/function declarations
- const/var/out parameters
- global/local variables and constants.
- Extended support of exception
handling, e.g. raise, try-except and try-finally
statements; real Delphi exceptions are raised internally
that allow to test an exception class in handler, e.g.
on E: EZeroDivide do.
- The PascalScript CodeObject engine
implements a secret interface (in addition to IDispatch)
that allows very fast interoperations between connected
script controls. Besides that execption processing can
be made transparent between connected script controls.
- Native script operators such as 'is',
'in', '@' and set constructors, e.g. [akLeft,akTop]
allow to work with imported Delphi objects, instead of
provided to ActiveX scripts special functions (e.g.
SetMake, SetEmpty, ClassIs, EventMake, ect.). Like for
the ActiveScripting based languages import units of your
Pascal units can be created. Import units for the VCL
are shipped with each copy of ScriptPack.#+
-
New three step initialization of ScriptPack
Control. Besides Prepare, Open and Close methods a State
property was added. In addition the new 'Prepared'
intermediate state was introduced. In this state all source
code is already parsed, but no global code is executed yet (CodeObject
is already acessible in this state). This new feature allows
circular dependencies between script controls even in case
when global code is used (hence handling several scripts at
the same time is simplified enormously). In simple cases a
call to Prepare method can be ommitted. Finally the
ACloseOnRuntimeError parameter was added to the Open method
to allow leaving script control opened in the case that
runtime errors occured during global code execution.
New exception handling replaces Last ScriptError
concept. Script control includes now the encoded source
(reference to script control), error line and position
information in exception messages (e.g. in string form). The
LMDDecodeErrorMessageInfo procedure allows to decode this
information for advanced applications.
New optimized
Delphi memory manager proxy allows to detect finalized
object destructions. E.g. all subsequent access to IDispatch
object wrapper will report 'Object has been destroyed'
exceptions instead of unsafe Access Violations. This
feauture is especially used by working with exceptions in
PascalScript, because exception objects are automatically
destroyed by the interpreter.
- New prepared expressions/statements feature was added to
optimize Eval and ExecuteStatement methods. If the same
expression/statement need to be executed many times then it
is more efficient to Prepare it first and then use Eval and
ExecuteStatement overloadeds methods that take prepared
objects as parameters. Note: Most speed gain will be
seen in native PascalScript implementation, because all
other ActiveX script implementations do not support this
feature internally.
To get a quick start we suggest that you review the demo projects which
are shipped with LMD ScriptPack (subfolder
\lmdscript
in
\demos
directory):
|
Folder
|
Description
|
|
\Debugger |
Demonstrates new debugger support. |
|
\DelphiMapping |
Demonstrates how to map und use
Delphi objects, functions, classes, events etc. in Script
code.
|
|
\HellowWorld |
Example of Hello World! application, where in
script code VCL Window is created and form canvas for
painting operatons is used |
|
\HostScriptInteropDemo |
This project demonstrates how forms created at
runtime via Pascal code and Script code can interoperate
with each other. |
|
\MultiLanguageDemo |
Demonstrates use of different Active Scripting
Engines (VBScript, JScript, Python etc.). Make sure that
additional scripting engines are installed beforehand. |
|
\ObjectModel (also BCB) |
Demonstrates development of applications which
publish their object model to a scripting language (like MS
Word, Internet Explorer etc.). Forms are not imported here,
special class are created and imported which represent
object model elements (like application, document) instead. |
|
\ScriptedNotepadDemo |
Small example of an (unfinished) NotePad
application which is created completely via Script Code
(demonstrates how to create forms, menu items, use of
standard dialogs etc.). |
Important note for C++
Builder users
Regarding import features: In BCB versions it is generally possible to do
everything you do in Delphi, except importing C++ sources. However you can
utilize preimported VCL wrapper-units or you can import additional Delphi units
(written in Pascal, e.g. third-party libraries). You can even use importing in
your own C++ project, adding to it one pascal unit with application object model
base classes. This is demonstrated in ObjectModel
demo. Note, that in this demo only abstract-base-classes are declared in pascal
unit, all logic is implemented in C++, in descendant classes.
[Top]
ScriptPack: Changes
New main feature in version 5 is VCL.NET support. New features in version 4
were:
- Unicode support for NT-based systems!
- New component: TLMDScriptDebugger - provides true multi-module
multi-language debugging capabilities for the script controls.
- Other minor new helpful additions and integration code
for LMD IDE-Tools support.
- Combined helpfile for all IDE-Tools packages (IDE
Integration package, Designpack, ScriptPack and SyntaxEdit).
New features in version 3 are:
ScriptPack 3 represented a complete rewrite! Important
note for user of ScriptPack packages prior version 3: Existing code will not be compatible and several changes
will be required!
- Complete Delphi interface to active scripting. There is
no longer need to use Script Extensions as in previous ScriptPack releases.
- Delphi wrappers for accessing Delphi objects from the
script. New Import utility with heavily improved Pascal Parser is available.
Import units which register almost all important VCL classes, routines and
constants are already included and can be directly used within your
application / scripts.
- Complete support for event handlers:
- Supporting Delphi event handlers in script.
- Wring event handlers in script.
- Ability to setup (hook) event handlers based on Delphi RTTI (for design
pack module support).
- Event handler source utilities.
[Top]
SyntaxEdit: Introduction
Thank you for using LMD SyntaxEdit! This component set provides a powerful and fast editor with
syntax highlighting, customizable syntax schemes (schemes for many popular
programming and scripting languages are included), Unicode and Code folding
support. Besides that visual appearance of the editor is completely
customizable. Along with the controls a very powerful RegEx parsing engine and
predefined dialogs for a simple and fast creation of editors are shipped with the
package.
Main features of LMD SyntaxEdit are:
- Logical separation of Document and View, multiple views
of the same text are easily possible.
- Syntax highlighting based on XML syntax schemes.
Subschemes also supported (e.g. Javascript in HTML).
- 15+ syntax schemes for popular languages like C++, HTML,
JavaScript, PHP, TCL, Visual Basic etc. are included.
- Code folding feature (also based on on XML syntax
schemes)
- Unicode support! Fast! No size limitations!
- All standard editor features like Word Wrap, Clipboard
support etc.
- Multilevel Undo/Redo, compound edit feature in document.
- Customizable 'special symbols' (spaces, tabs, line ends,
line wraps)
- Customizable gutter with any number of bookmarks,
breakpoints, line numbering, folding images, and custom bars (along with
OnGutterPaint/OnGutterClick custom events).
- Bookmarks and breakpoints behavior as known in Delphi
IDE: bookmarks never disappear when text is deleted, breakpoints will
disappear when corresponding line is deleted. Different kinds of breakpoints
are supported - with ability to set images for any kind of breakpoint,
bookmarks and folding pictures.
- Supports custom collections of line markers, or just
markers for any position in text. Markers positions will be updated during
text editing.
- Document works with any kind of line ending characters
(DOS ASCII, Linux, MAC etc. formats)
- Virtual editing in view (as known from Delphi IDE).
- Predefined dialogs for Search (including regular
expression based search), Goto Line etc. operations
- Property editor for syntax/color scheme editing included.
To get a quick start we suggest that you review the demo projects which
are shipped with LMD SyntaxEdit (subfolder
\lmdsyntax
in
\demos
directory):
|
Folder
|
Description
|
|
\MegaDemo |
Single MegaDemo which demonstrates all features
of LMD SyntaxEdit. |
[Top]
SyntaxEdit: Changes
New features in Release 2 are:
- Drag and drop of text supported
- Bugfixes and enourmous speed enhancements.
- Auto-completion API added. Completion supported: based on document text,
or custom completion, based on events. See TLMDEditView.CompletionSettings,
OnFillCompletionList, OnCompletionReplace, OnCompletionCustomDraw,
OnCompletionMeasureItem properties/events.
- Simple text highlight API added: HighlightSettings, Add/Remove
Highlight. Useful to highlight some errors or some search results. See
TLMDEditView.HighlightSettings property, and TLMDEditView.AddHighlight,
RemoveHighlight, ClearHighlight methods.
- UTF8 text auto-detection improved: now detection of UTF8 without BOM is
supported
- Other improvements like Addict 4 support, themed border support,
improved dialogs and much more.
[Top]
© by LMD Innovative Germany
All other trademarks are
acknowledged.